﻿
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- saved from url=(0014)about:internet -->
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:mssdk="winsdk" xmlns:script="urn:script" xmlns:build="urn:build" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="Description" content="Using Visual SourceSafe"/>
<meta name="MSHAttr" content="PreferredSiteName:MSDN"/>
<meta name="MSHAttr" content="PreferredLib:/library/windows/hardware"/>
<title>Using Visual SourceSafe</title>

<meta name="MS-HAID" content="SymChk_31a3896b-b22d-459b-b75a-9ec46ef5c8fa.xml"/>


<link rel="STYLESHEET" type="text/css" HREF="../common/backsdk4.css"/>





<style>
html,div { margin: 0; padding: 0;}

body {
	padding: 0px;
	margin: 0px;
	overflow: auto;
	height: 100%;
}

#winchm_template_button{
	float: right;
	width: 93px;
	top: 7px;
	position: relative;
	text-align: right;
	right: 5px;
	height: auto;
}

#winchm_template_top{
	padding: 0px;
	margin: 0px;
	border-bottom: 1px solid #9B9B9B;
	background-color: #B1CEFE;
}

#winchm_template_navigation{
	margin: 0px;
	padding-top: 7px;
	padding-left: 7px;
	padding-bottom: 3px;
	padding-right: 0px;
	font-size: 8.5pt;
	font-family: Arial, Helvetica, sans-serif;
	font-weight: normal;
	color: #585858;
}

#winchm_template_title{
	margin: 0px;
	padding-top: 4px;
	padding-left: 7px;
	padding-bottom: 7px;
	padding-right: 0px;
	font-size: 18px; 
	font-family: Verdana, Geneva, sans-serif;
	color: #363636;
}

#winchm_template_content{
	margin-top: 20px;
	margin-left: 15px;
	margin-bottom: 20px;
	margin-right: 15px;
	width: auto  !important;
	width: 100%;
}

#winchm_template_footer{
	border-width: 1px;
	border-color: #B1CEFE;
	border-top-style: solid;
	margin-top: 15px;
	margin-left: 15px;
	margin-bottom: 20px;
	margin-right: 15px;
	padding-top: 7px;
	padding-left: 0px;
	padding-bottom: 0px;
	padding-right: 0px;
	font-family: arial, helvetica, sans-serif;
	font-size: 8.5pt;
	color: #696969;
	width: auto;
	text-align: left;
}


#winchm_template_container{
	margin: 0px;
	padding: 0px;
	position: static;
	padding-bottom: 3px;
	overflow: auto;
	background-color: #FFFFFF;
}


@media print
{
#winchm_template_container{
	position: static;	
	margin: 0px;
	padding: 5px;
	
	width: auto;
	height: auto;
	overflow: auto;
}
#winchm_template_button{
visibility:hidden;
}
}

#winchm_template_navigation A:link	{text-decoration: none; color:#004080}
#winchm_template_navigation A:visited  {text-decoration: none; color: #004080}
#winchm_template_navigation A:active {text-decoration: none; color: #004080 }
#winchm_template_navigation A:hover {text-decoration: none;color: #0080FF}

A:link	{text-decoration: underline; color:#0033CC}
A:visited  {text-decoration: underline; color: #0033CC}
A:active {text-decoration: underline; color: #0033CC }
A:hover {text-decoration: underline;color: #FF0000;}
</style>
<script type="text/javascript">
function isMobile(){
Agent = window.navigator.userAgent;
if (Agent.indexOf("iPhone")>=1 || Agent.indexOf("iPad")>=1 || Agent.indexOf("iPod")>=1 || Agent.indexOf("Android")>=1){
return true;
}else{
return false;	
}

}
function d_onresize(){
if (window.navigator.userAgent.indexOf("MSIE")>=1){
document.getElementById('winchm_template_container').style.pixelWidth = document.body.offsetWidth - 3;
document.getElementById('winchm_template_container').style.pixelHeight = document.body.offsetHeight - document.getElementById('winchm_template_top').offsetHeight - 4;
}
document.getElementById('winchm_template_container').style.top = document.getElementById('winchm_template_top').offsetHeight + 'px';
}

function d_onbeforeprint(){
document.getElementById('winchm_template_container').style.width = 'auto';
document.getElementById('winchm_template_container').style.height = 'auto';
}

function d_onafterprint(){
d_onresize();
}

if(!isMobile()){

window.onload = d_onresize;
window.onresize = d_onresize;
window.onbeforeprint = d_onbeforeprint;
window.onafterprint = d_onafterprint;

document.write("<style>\n");
document.write("body {overflow: hidden;}\n");
document.write("#winchm_template_container {position: absolute;overflow: auto;top : 0px;right: 0px;bottom: 0px;left: 0px;}\n");
document.write("</style>\n");
}

</script>
</head>
<body><script language="JavaScript" type="text/JavaScript">
function syn(){
if(parent.nav.tree){
 if(parent.nav.tree.loaded){
  parent.nav.tree.selectNode(158);
 }else{
  setTimeout("syn()",500);
}
  }else{
  setTimeout("syn()",500);
  }}
if(parent!=self){
  setTimeout("syn()",100);
}else{
  parent.location.href = "../../index.htm?page=debugger/using_visual_sourcesafe.htm";
}
originalOnload = window.onload;
if(originalOnload==null){
window.onload = function(){parent.contentLoaded = true;};
}else{
window.onload = function(){originalOnload();parent.contentLoaded = true;};
}
</script> 


<div id="winchm_template_top">
	<div id="winchm_template_button"><A href="source_control_systems.htm" title="Previous topic"><img id="winchm_template_prev" alt="Previous topic" src="../template2/btn_prev_n.gif" border="0"></a><A href="debugging_with_visual_sourcesafe.htm" title="Next topic"><img id="winchm_template_next" alt="Next topic" src="../template2/btn_next_n.gif" border="0"></a></div>
	<div id="winchm_template_navigation">Help &gt; 
<A href="introduction6.htm">Debugging Tools for Windows (WinDbg, KD, CDB, NTSD)</A> &gt; <A href="debugging_resources.htm">Debugging Resources</A> &gt; <A href="source_code.htm">Source Code</A> &gt; <A href="srcsrv.htm">SrcSrv</A> &gt; <A href="source_control_systems.htm">Source Control Systems</A> &gt; </div>
	<div id="winchm_template_title">Using Visual SourceSafe</div>
</div>
<div id="winchm_template_container">
	<div id="winchm_template_content"><div id="mainSection"><p>Visual SourceSafe is an x86-based application, and the source indexing scripts and tools associated with it are installed only with the x86 package of Debugging Tools for Windows.</p>
<p>To successfully use Visual SourceSafe with SrcSrv, several defaults must be set in the system, including the Visual SourceSafe default database, the current project, and the working folder.  You must also stamp each build project with a label so that Visual SourceSafe can differentiate between versions of a given file.  Finally, you must set up any credentials needed to access the Visual SourceSafe database.</p>
<h3><a id="visual_sourcesafe_database"></a><a id="VISUAL_SOURCESAFE_DATABASE"></a>Visual SourceSafe Database</h3>
<p>The default Visual SourceSafe database can be set with the SSDIR environment variable.  If it is not set there, the SrcSrv indexing script can usually determine this from the registry.  If it cannot, the script prompts you to set SSDIR.  Regardless, this database value must be listed in your <a href="#Bookmark152">Srcsrv.ini</a> file along with a simple alias to identify the database.  More instructions can be found in the comments in Srcsrv.ini.  You should add the entry in the variables section of Srcsrv.ini using the following syntax:</p>
<div class="code"><span codelanguage=""><table>
<tr>
<th></th>
</tr>
<tr>
<td>
<pre>MYDATABASE=\\server\VssShare</pre>
</td>
</tr>
</table></span></div>
<h3><a id="current_project"></a><a id="CURRENT_PROJECT"></a>Current Project</h3>
<p>Visual SourceSafe uses the concept of a <i>current project</i>.  The SrcSrv indexing script respects this value and limits processing to those source files that are part of the current project.  To display the current project, use the following command:</p>
<div class="code"><span codelanguage=""><table>
<tr>
<th></th>
</tr>
<tr>
<td>
<pre>ss.exe project</pre>
</td>
</tr>
</table></span></div>
<p>To change the current project, use the following command:</p>
<div class="code"><span codelanguage=""><table>
<tr>
<th></th>
</tr>
<tr>
<td>
<pre>ss.exe cp Project</pre>
</td>
</tr>
</table></span></div>
<p>where <i>Project</i> indicates the current project.  For example, to process all projects, set the current project to the root:</p>
<div class="code"><span codelanguage=""><table>
<tr>
<th></th>
</tr>
<tr>
<td>
<pre>ss.exe cp $/</pre>
</td>
</tr>
</table></span></div>
<h3><a id="working_folder"></a><a id="WORKING_FOLDER"></a>Working Folder</h3>
<p>Visual SourceSafe projects are associated with <i>working folders</i>.  A working folder is the location on the client computer that corresponds to the root of a project.  However it is possible for such a computer to obtain and build source without a working folder being specified, usually when creating projects through the Visual Studio interface or by using the command:</p>
<div class="code"><span codelanguage=""><table>
<tr>
<th></th>
</tr>
<tr>
<td>
<pre>ss.exe get -R</pre>
</td>
</tr>
</table></span></div>
<p>However, this mode of operation is incompatible with SrcSrv indexing.  SrcSrv requires that a working folder be specified. To set the working folder, use the command:</p>
<div class="code"><span codelanguage=""><table>
<tr>
<th></th>
</tr>
<tr>
<td>
<pre>ss.exe workfold Project Folder</pre>
</td>
</tr>
</table></span></div>
<p>where <i>Project</i> indicates the current project and <i>Folder</i> indicates the location corresponding to the root of the project.</p>
<h3><a id="labels"></a><a id="LABELS"></a>Labels</h3>
<p>Visual SourceSafe cannot determine what version of a file exists within the working directory of a build machine.  Consequently, you must use labels to stamp the project with an identifier that is used to extract source files on the debugger client.  Thus, before indexing, you must verify that all changes are checked into the database and then apply a label to the project.  Labels can be applied using the command:</p>
<div class="code"><span codelanguage=""><table>
<tr>
<th></th>
</tr>
<tr>
<td>
<pre>ss.exe label Project</pre>
</td>
</tr>
</table></span></div>
<p>where <i>Project</i> indicates the current project.</p>
<p>In the following example, the label "VERSION_3" is applied to a project called "$/sdktools":</p>
<div class="code"><span codelanguage=""><table>
<tr>
<th></th>
</tr>
<tr>
<td>
<pre>E:\nt\user&gt;ss.exe label $/sdktools
 Label for $/sdktools: VERSION_3
 Comment for $/sdktools:
 This is a comment.</pre>
</td>
</tr>
</table></span></div>
<p>After the label is applied, you can specify this label to the SrcSrv indexing script by setting the environment variable, SSLABEL, or by passing it as a command-line parameter, as in the following example:</p>
<div class="code"><span codelanguage=""><table>
<tr>
<th></th>
</tr>
<tr>
<td>
<pre>vssindex.cmd -label=VERSION_3</pre>
</td>
</tr>
</table></span></div>
<p>Again, this label is required for SrcSrv indexing to work.  Note that if you pass a label that does not exist in the project, it can take a long time for the script to complete and the results are of no use.</p>
<h3><a id="credentials"></a><a id="CREDENTIALS"></a>Credentials</h3>
<p>If your Visual SourceSafe database requires a user and optional password for access, these values must be set through the SSUSER and SSPWD environment variables.  This applies not only at the time the build is indexed, but also on the debugger client.  </p></div></div>	
	<div id="winchm_template_footer">Copyright &copy; 2019. All rights 
reserved. (To change the copyright info, just edit it in template.)</div>
</div>

</body>
</html>
